package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"strings"
)

func send_message(message string) string {
	// 配置参数
	apiURL := BASE_URL           // 替换为实际的Dify API URL
	apiKey := API_KEY_TRANSLATOR // 替换为你的API密钥

	// 准备请求数据
	requestBody := WorkflowRequest{
		ResponseMode: "streaming", // 替换为你的工作流ID
		Inputs: map[string]any{
			"input": message, // 替换为你的输入参数
		},
		User: "abc-123", // 替换为你的用户名
	}

	// 将请求体序列化为JSON
	jsonData, err := json.Marshal(requestBody)
	if err != nil {
		fmt.Println("JSON序列化错误:", err)
		return "JSON序列化错误:" + err.Error()
	}

	// 创建HTTP请求
	req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Println("创建请求错误:", err)
		return "创建请求错误:" + err.Error()
	}

	// 设置请求头
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("Authorization", "Bearer "+apiKey)

	// 发送请求
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("请求发送错误:", err)
		return "请求发送错误:" + err.Error()
	}
	defer resp.Body.Close()

	// 读取响应
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("读取响应错误:", err)
		return "读取响应错误:" + err.Error()
	}
	// 显示响应内容
	// fmt.Println("响应内容:")
	// fmt.Println(string(body))
	res := parser_respone(string(body))
	return res
}

func parser_respone(resp string) string {
	lines := strings.Split(resp, "\n")
	result := ""
	find := "workflow_finished"
	// 解析 JSON 数据
	var workflow WorkflowData

	for _, line := range lines {
		if strings.Contains(line, find) {
			result = line
			result = strings.Replace(result, "data: ", "", 1)
			// 原始 JSON 数据
			jsonData := result
			err := json.Unmarshal([]byte(jsonData), &workflow)
			if err != nil {
				fmt.Println("解析 JSON 出错:", err)
				return "解析 JSON 出错:" + err.Error()
			}
			break
		}
	}
	// fmt.Println(workflow.Data.Outputs.Output)
	result = workflow.Data.Outputs.Output
	return result
}
